home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / include / fft.h.z / fft.h
C/C++ Source or Header  |  1996-03-14  |  24KB  |  516 lines

  1. #ifndef _SGI_FFT_
  2. #define    _SGI_FFT_
  3.  
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7.  
  8. #define        FACTOR_SPACE    15
  9. #define        FAST_MALLOC_STRING    "FFT_FAST_MALLOC"
  10.  
  11. /* *******************************************************
  12.     Complex structures definitions
  13. ******************************************************* */
  14.  
  15. typedef struct {
  16.     float re;
  17.     float im;
  18. } complex;
  19.  
  20. typedef struct {
  21.     double re;
  22.     double im;
  23. } zomplex;
  24.  
  25.  
  26. /* *******************************************************
  27.     C Functions prototypes
  28. ******************************************************* */
  29. /* *******************************************************
  30.     complex <---> complex FFTs
  31. ******************************************************* */
  32. complex *cfft1di( int n, complex *save);
  33. int cfft1d( int job, int n, complex *array, int inc, complex *save);
  34.  
  35. complex *cfftm1di( int m, complex *save);
  36. int cfftm1d( int job, int m, int n, complex *array, int incI, int incJ, complex *save);
  37.  
  38. complex *cfft2di( int n1, int n2, complex *save);
  39. int cfft2d( int job, int n1, int n2, complex *array, int ld, complex *save);
  40.  
  41. complex *cfft3di( int n1, int n2, int n3, complex *save);
  42. int cfft3d( int job, int n1, int n2, int n3, complex *array, int ld1, int ld2, complex *save);
  43.  
  44. /* *******************************************************
  45.     zomplex <---> zomplex FFTs
  46. ******************************************************* */
  47. zomplex *zfft1di( int n, zomplex *save);
  48. int zfft1d( int job, int n, zomplex *array, int inc, zomplex *save);
  49.  
  50. zomplex *zfftm1di( int m, zomplex *save);
  51. int zfftm1d( int job, int m, int n, zomplex *array, int incI, int incJ, zomplex *save);
  52.  
  53. zomplex *zfft2di( int n1, int n2, zomplex *save);
  54. int zfft2d( int job, int n1, int n2, zomplex *array, int ld, zomplex *save);
  55.  
  56. zomplex *zfft3di( int n1, int n2, int n3, zomplex *save);
  57. int zfft3d( int job, int n1, int n2, int n3, zomplex *array, int ld1, int ld2, zomplex *save);
  58.  
  59. /************************************************************************
  60.     Product modules ... 
  61.         Performs convolution in 1 Domain by Product in the other
  62. ********************************************************************** */
  63.  
  64. void cprod1d( int n, complex *y, int incy, complex *filter, int incx);
  65. void zprod1d( int n, zomplex *y, int incy, zomplex *filter, int incx);
  66.         
  67. void cprodm1d( int n1, int n2, complex *y, int incy, int ldy, complex *filter, int incx, int ldx);
  68. void zprodm1d( int n1, int n2, zomplex *y, int incy, int ldy, zomplex *filter, int incx, int ldx);
  69.  
  70. void cprod2d( int n1, int n2, complex *y, int ldy, complex *filter, int ldx);
  71. void zprod2d( int n1, int n2, zomplex *y, int ldy, zomplex *filter, int ldx);
  72.  
  73. void cprod3d( int n1, int n2, int n3, complex *y, int ldy1, int ldy2, 
  74.         complex *filter, int ldx1, int ldx2);
  75. void zprod3d( int n1, int n2, int n3, zomplex *y, int ldy1, int ldy2, 
  76.         zomplex *filter, int ldx1, int ldx2);
  77.  
  78. /************************************************************************
  79.     Scaling modules ... 
  80.         Scale the sequence by value APLHA ... 
  81.         to keep absolute values after Direct+Inverse transform.
  82. ********************************************************************** */
  83.  
  84. void cscal1d( int n, float alpha, complex *y, int inc);
  85. void zscal1d( int n, double alpha, zomplex *y, int inc);
  86.  
  87. void cscalm1d( int m, int n, float alpha, complex *array, int incI, int incJ);
  88. void zscalm1d( int m, int n, double alpha, zomplex *array, int incI, int incJ);
  89.  
  90. void cscal2d( int nx, int ny, float alpha, complex *y, int ld);
  91. void zscal2d( int nx, int ny, double alpha, zomplex *y, int ld);
  92.  
  93. void cscal3d( int nx, int ny, int nz, float alpha, complex *y, int ld1,int ld2);
  94. void zscal3d( int nx, int ny, int nz, double alpha, zomplex *y,int ld1,int ld2);
  95.  
  96.  
  97. /* *******************************************************
  98.     Fortran Subroutines prototypes
  99. ******************************************************* */
  100. /* *******************************************************
  101.     complex <---> complex FFTs
  102. ******************************************************* */
  103. void cfft1di_( int *n, complex *save);
  104. void cfft1d_( int *job, int *n, complex *array, int *inc, complex *save);
  105.  
  106. complex *cfftm1di_( int *m, complex *save);
  107. void cfftm1d_( int *job, int *m, int *n, complex *array, int *incI, int *incJ, complex *save);
  108.  
  109. void cfft2di_( int *n1, int *n2, complex *save);
  110. void cfft2d_( int *job, int *n1, int *n2, complex *array, int *ld, complex *save);
  111.  
  112. void cfft3di_( int *n1, int *n2, int *n3, complex *save);
  113. void cfft3d_( int *job, int *n1, int *n2, int *n3, complex *array, int *ld1, int *ld2, complex *save);
  114.  
  115. /* ****************************
  116.     zomplex <---> zomplex FFTs
  117. **************************** */
  118. void zfft1di_( int *n, zomplex *save);
  119. void zfft1d_( int *job, int *n, zomplex *array, int *inc, zomplex *save);
  120.  
  121. zomplex *zfftm1di_( int *m, zomplex *save);
  122. void zfftm1d_( int *job, int *m, int *n, zomplex *array, int *incI, int *incJ, zomplex *save);
  123.  
  124. void zfft2di_( int *n1, int *n2, zomplex *save);
  125. void zfft2d_( int *job, int *n1, int *n2, zomplex *array, int *ld, zomplex *save);
  126.  
  127. void zfft3di_( int *n1, int *n2, int *n3, zomplex *save);
  128. void zfft3d_( int *job, int *n1, int *n2, int *n3, zomplex *array, int *ld1, int *ld2, zomplex *save);
  129.  
  130. /************************************************************************
  131.     Product modules ... 
  132.         Performs convolution in 1 Domain by Product in the other
  133. ********************************************************************** */
  134.  
  135. void cprod1d_( int *n, complex *y, int *incy, complex *filter, int *incx);
  136. void zprod1d_( int *n, zomplex *y, int *incy, zomplex *filter, int *incx);
  137.         
  138. void cprodm1d_( int *n1, int *n2, complex *y, int *incy, int *ldy, complex *filter, int *incx, int *ldx);
  139. void zprodm1d_( int *n1, int *n2, zomplex *y, int *incy, int *ldy, zomplex *filter, int *incx, int *ldx);
  140.  
  141. void cprod2d_( int *n1, int *n2, complex *y, int *ldy, complex *filter, int *ldx);
  142. void zprod2d_( int *n1, int *n2, zomplex *y, int *ldy, zomplex *filter, int *ldx);
  143.  
  144. void cprod3d_( int *n1, int *n2, int *n3, complex *y, int *ldy1, int *ldy2, 
  145.         complex *filter, int *ldx1, int *ldx2);
  146. void zprod3d_( int *n1, int *n2, int *n3, zomplex *y, int *ldy1, int *ldy2, 
  147.         zomplex *filter, int *ldx1, int *ldx2);
  148.  
  149. /************************************************************************
  150.     Scaling modules ... 
  151.         Scale the sequence by value APLHA ... 
  152.         to keep absolute values after Direct+Inverse transform.
  153. ********************************************************************** */
  154.  
  155. void cscal1d_( int *n, float *alpha, complex *y, int *inc);
  156. void zscal1d_( int *n, double *alpha, zomplex *y, int *inc);
  157.  
  158. void cscalm1d_( int *m, int *n, float *alpha, complex *array, int *inc, int *lda);
  159. void zscalm1d_( int *m, int *n, double *alpha, zomplex *array, int *inc, int *lda);
  160.  
  161. void cscal2d_( int *nx, int *ny, float *alpha, complex *y, int *ld);
  162. void zscal2d_( int *nx, int *ny, double *alpha, zomplex *y, int *ld);
  163.  
  164. void cscal3d_( int *nx, int *ny, int *nz, float *alpha, complex *y, int *ld1,int *ld2);
  165. void zscal3d_( int *nx, int *ny, int *nz, double *alpha, zomplex *y,int *ld1,int *ld2);
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174. /* *******************************************************
  175.     C  real <---> complex FFTs
  176. ******************************************************* */
  177. float *sfft1di( int n, float *save);
  178. float *sfft1dui( int n, float *save);
  179. int sfft1d( int job, int n, float *array, int inc, float *save);
  180. int sfft1du( int job, int n, float *array, int inc, float *save);
  181.  
  182. float *sfftm1di( int m, float *save);
  183. int sfftm1d( int job, int m, int n, float *array, int incI, int incJ, float *save);
  184. float *sfftm1dui( int m, float *save);
  185. int sfftm1du( int job, int m, int n, float *array, int incI, int incJ, float *save);
  186.  
  187. float *sfft2di( int n1, int n2, float *save);
  188. float *sfft2dui( int n1, int n2, float *save);
  189. int sfft2d( int job, int n1, int n2, float *array, int ld, float *save);
  190. int sfft2du( int job, int n1, int n2, float *array, int ld, float *save);
  191.  
  192. float *sfft3di( int n1, int n2, int n3, float *save);
  193. float *sfft3dui( int n1, int n2, int n3, float *save);
  194. int sfft3d( int job, int n1, int n2, int n3, float *array, int ld1, int ld2, float *save);
  195. int sfft3du( int job, int n1, int n2, int n3, float *array, int ld1, int ld2, float *save);
  196.  
  197.  
  198. /* *******************************************************
  199.     C  double <---> zomplex FFTs
  200. ******************************************************* */
  201. double *dfft1di( int n, double *save);
  202. double *dfft1dui( int n, double *save);
  203. int dfft1d( int job, int n, double *array, int inc, double *save);
  204. int dfft1du( int job, int n, double *array, int inc, double *save);
  205.  
  206. double *dfftm1di( int m, double *save);
  207. int dfftm1d( int job, int m, int n, double *array, int incI, int incJ, double *save);
  208. double *dfftm1dui( int m, double *save);
  209. int dfftm1du( int job, int m, int n, double *array, int incI, int incJ, double *save);
  210.  
  211. double *dfft2di( int n1, int n2, double *save);
  212. double *dfft2dui( int n1, int n2, double *save);
  213. int dfft2d( int job, int n1, int n2, double *array, int ld, double *save);
  214. int dfft2du( int job, int n1, int n2, double *array, int ld, double *save);
  215.  
  216. double *dfft3di( int n1, int n2, int n3, double *save);
  217. double *dfft3dui( int n1, int n2, int n3, double *save);
  218. int dfft3d( int job, int n1, int n2, int n3, double *array, int ld1, int ld2, double *save);
  219. int dfft3du( int job, int n1, int n2, int n3, double *array, int ld1, int ld2, double *save);
  220.  
  221. /* *******************************************************
  222.     NEW ... C  double <---> zomplex FFTs
  223. ******************************************************* */
  224. double *dzfft1dui( int n, double *save);
  225. int dzfft1du( int job, int n, double *array, int inc, double *save);
  226. int zdfft1du( int job, int n, double *array, int inc, double *save);
  227.  
  228. double *dzfftm1dui( int m, double *save);
  229. int dzfftm1du( int job, int m, int n, double *array, int incI, int incJ, double *save);
  230. int zdfftm1du( int job, int m, int n, double *array, int incI, int incJ, double *save);
  231.  
  232. double *dzfft2dui( int n1, int n2, double *save);
  233. int dzfft2du( int job, int n1, int n2, double *array, int ld, double *save);
  234. int zdfft2du( int job, int n1, int n2, double *array, int ld, double *save);
  235.  
  236. double *dzfft3dui( int n1, int n2, int n3, double *save);
  237. int dzfft3du( int job, int n1, int n2, int n3, double *array, int ld1, int ld2, double *save);
  238. int zdfft3du( int job, int n1, int n2, int n3, double *array, int ld1, int ld2, double *save);
  239.  
  240. float *scfft1dui( int n, float *save);
  241. int scfft1du( int job, int n, float *array, int inc, float *save);
  242. int csfft1du( int job, int n, float *array, int inc, float *save);
  243.  
  244. float *scfftm1dui( int m, float *save);
  245. int scfftm1du( int job, int m, int n, float *array, int incI, int incJ, float *save);
  246. int csfftm1du( int job, int m, int n, float *array, int incI, int incJ, float *save);
  247.  
  248. float *scfft2dui( int n1, int n2, float *save);
  249. int scfft2du( int job, int n1, int n2, float *array, int ld, float *save);
  250. int csfft2du( int job, int n1, int n2, float *array, int ld, float *save);
  251.  
  252. float *scfft3dui( int n1, int n2, int n3, float *save);
  253. int scfft3du( int job, int n1, int n2, int n3, float *array, int ld1, int ld2, float *save);
  254. int csfft3du( int job, int n1, int n2, int n3, float *array, int ld1, int ld2, float *save);
  255.  
  256. /*
  257. *     Fortran Interface
  258. */
  259. void dzfft1dui_( int *n, double *save);
  260. void dzfft1du_( int *job, int *n, double *array, int *inc, double *save);
  261. void zdfft1du_( int *job, int *n, double *array, int *inc, double *save);
  262.  
  263. void dzfftm1dui_( int *m, double *save);
  264. void dzfftm1du_( int *job, int *m, int *n, double *array, int *incI, int *incJ, double *save);
  265. void zdfftm1du_( int *job, int *m, int *n, double *array, int *incI, int *incJ, double *save);
  266.  
  267. void dzfft2dui_( int *n1, int *n2, double *save);
  268. void dzfft2du_( int *job, int *n1, int *n2, double *array, int *ld, double *save);
  269. void zdfft2du_( int *job, int *n1, int *n2, double *array, int *ld, double *save);
  270.  
  271. void dzfft3dui_( int *n1, int *n2, int *n3, double *save);
  272. void dzfft3du_( int *job, int *n1, int *n2, int *n3, double *array, int *ld1, int *ld2, double *save);
  273. void zdfft3du_( int *job, int *n1, int *n2, int *n3, double *array, int *ld1, int *ld2, double *save);
  274.  
  275. void scfft1dui_( int *n, float *save);
  276. void scfft1du_( int *job, int *n, float *array, int *inc, float *save);
  277. void csfft1du_( int *job, int *n, float *array, int *inc, float *save);
  278.  
  279. void scfftm1dui_( int *m, float *save);
  280. void scfftm1du_( int *job, int *m, int *n, float *array, int *incI, int *incJ, float *save);
  281. void csfftm1du_( int *job, int *m, int *n, float *array, int *incI, int *incJ, float *save);
  282.  
  283. void scfft2dui_( int *n1, int *n2, float *save);
  284. void scfft2du_( int *job, int *n1, int *n2, float *array, int *ld, float *save);
  285. void csfft2du_( int *job, int *n1, int *n2, float *array, int *ld, float *save);
  286.  
  287. void scfft3dui_( int *n1, int *n2, int *n3, float *save);
  288. void scfft3du_( int *job, int *n1, int *n2, int *n3, float *array, int *ld1, int *ld2, float *save);
  289. void csfft3du_( int *job, int *n1, int *n2, int *n3, float *array, int *ld1, int *ld2, float *save);
  290.  
  291. /* *******************************************************
  292.     NEW ... Packed C  double <---> zomplex FFTs
  293. ******************************************************* */
  294. double *dzfft1di( int n, double *save);
  295. int dzfft1d( int job, int n, double *array, int inc, double *save);
  296. int zdfft1d( int job, int n, double *array, int inc, double *save);
  297.  
  298. double *dzfftm1di( int m, double *save);
  299. int dzfftm1d( int job, int m, int n, double *array, int incI, int incJ, double *save);
  300. int zdfftm1d( int job, int m, int n, double *array, int incI, int incJ, double *save);
  301.  
  302. double *dzfft2di( int n1, int n2, double *save);
  303. int dzfft2d( int job, int n1, int n2, double *array, int ld, double *save);
  304. int zdfft2d( int job, int n1, int n2, double *array, int ld, double *save);
  305.  
  306. double *dzfft3di( int n1, int n2, int n3, double *save);
  307. int dzfft3d( int job, int n1, int n2, int n3, double *array, int ld1, int ld2, double *save);
  308. int zdfft3d( int job, int n1, int n2, int n3, double *array, int ld1, int ld2, double *save);
  309.  
  310. float *scfft1di( int n, float *save);
  311. int scfft1d( int job, int n, float *array, int inc, float *save);
  312. int csfft1d( int job, int n, float *array, int inc, float *save);
  313.  
  314. float *scfftm1di( int m, float *save);
  315. int scfftm1d( int job, int m, int n, float *array, int incI, int incJ, float *save);
  316. int csfftm1d( int job, int m, int n, float *array, int incI, int incJ, float *save);
  317.  
  318. float *scfft2di( int n1, int n2, float *save);
  319. int scfft2d( int job, int n1, int n2, float *array, int ld, float *save);
  320. int csfft2d( int job, int n1, int n2, float *array, int ld, float *save);
  321.  
  322. float *scfft3di( int n1, int n2, int n3, float *save);
  323. int scfft3d( int job, int n1, int n2, int n3, float *array, int ld1, int ld2, float *save);
  324. int csfft3d( int job, int n1, int n2, int n3, float *array, int ld1, int ld2, float *save);
  325.  
  326. /*
  327. *     Fortran Interface
  328. */
  329. void dzfft1di_( int *n, double *save);
  330. void dzfft1d_( int *job, int *n, double *array, int *inc, double *save);
  331. void zdfft1d_( int *job, int *n, double *array, int *inc, double *save);
  332.  
  333. void dzfftm1di_( int *m, double *save);
  334. void dzfftm1d_( int *job, int *m, int *n, double *array, int *incI, int *incJ, double *save);
  335. void zdfftm1d_( int *job, int *m, int *n, double *array, int *incI, int *incJ, double *save);
  336.  
  337. void dzfft2di_( int *n1, int *n2, double *save);
  338. void dzfft2d_( int *job, int *n1, int *n2, double *array, int *ld, double *save);
  339. void zdfft2d_( int *job, int *n1, int *n2, double *array, int *ld, double *save);
  340.  
  341. void dzfft3di_( int *n1, int *n2, int *n3, double *save);
  342. void dzfft3d_( int *job, int *n1, int *n2, int *n3, double *array, int *ld1, int *ld2, double *save);
  343. void zdfft3d_( int *job, int *n1, int *n2, int *n3, double *array, int *ld1, int *ld2, double *save);
  344.  
  345. void scfft1di_( int *n, float *save);
  346. void scfft1d_( int *job, int *n, float *array, int *inc, float *save);
  347. void csfft1d_( int *job, int *n, float *array, int *inc, float *save);
  348.  
  349. void scfftm1di_( int *m, float *save);
  350. void scfftm1d_( int *job, int *m, int *n, float *array, int *incI, int *incJ, float *save);
  351. void csfftm1d_( int *job, int *m, int *n, float *array, int *incI, int *incJ, float *save);
  352.  
  353. void scfft2di_( int *n1, int *n2, float *save);
  354. void scfft2d_( int *job, int *n1, int *n2, float *array, int *ld, float *save);
  355. void csfft2d_( int *job, int *n1, int *n2, float *array, int *ld, float *save);
  356.  
  357. void scfft3di_( int *n1, int *n2, int *n3, float *save);
  358. void scfft3d_( int *job, int *n1, int *n2, int *n3, float *array, int *ld1, int *ld2, float *save);
  359. void csfft3d_( int *job, int *n1, int *n2, int *n3, float *array, int *ld1, int *ld2, float *save);
  360.  
  361. /************************************************************************
  362.     C  Product modules ... 
  363.         Performs convolution in 1 Domain by Product in the other
  364. ********************************************************************** */
  365.  
  366. void sprod1du( int n, float *y, int incy, float *filter, int incx);
  367. void dprod1du( int n, double *y, int incy, double *filter, int incx);
  368.         
  369. void sprodm1du( int n1, int n2, float *y, int incy, int ldy, float *filter, int incx, int ldx);
  370. void dprodm1du( int n1, int n2, double *y, int incy, int ldy, double *filter, int incx, int ldx);
  371.  
  372. void sprod2du( int n1, int n2, float *y, int ldy, float *filter, int ldx);
  373. void dprod2du( int n1, int n2, double *y, int ldy, double *filter, int ldx);
  374.  
  375. void sprod3du( int n1, int n2, int n3, float *y, int ldy1, int ldy2, 
  376.         float *filter, int ldx1, int ldx2);
  377. void dprod3du( int n1, int n2, int n3, double *y, int ldy1, int ldy2, 
  378.         double *filter, int ldx1, int ldx2);
  379.  
  380. void sprod1d( int n, float *y, int incy, float *filter, int incx);
  381. void dprod1d( int n, double *y, int incy, double *filter, int incx);
  382.         
  383. void sprodm1d( int n1, int n2, float *y, int incy, int ldy, float *filter, int incx, int ldx);
  384. void dprodm1d( int n1, int n2, double *y, int incy, int ldy, double *filter, int incx, int ldx);
  385.  
  386. void sprod2d( int n1, int n2, float *y, int ldy, float *filter, int ldx);
  387. void dprod2d( int n1, int n2, double *y, int ldy, double *filter, int ldx);
  388.  
  389. void sprod3d( int n1, int n2, int n3, float *y, int ldy1, int ldy2, 
  390.         float *filter, int ldx1, int ldx2);
  391. void dprod3d( int n1, int n2, int n3, double *y, int ldy1, int ldy2, 
  392.         double *filter, int ldx1, int ldx2);
  393.  
  394. /************************************************************************
  395.     C Scaling modules ... 
  396.         Scale the sequence by value APLHA ... 
  397.         to keep absolute values after Direct+Inverse transform.
  398. ********************************************************************** */
  399.  
  400. void sscal1d( int n, float alpha, float *y, int inc);
  401. void dscal1d( int n, double alpha, double *y, int inc);
  402.  
  403. void sscalm1d( int m, int n, float alpha, float *array, int incI, int incJ);
  404. void dscalm1d( int m, int n, double alpha, double *array, int incI, int incJ);
  405.  
  406. void sscal2d( int nx, int ny, float alpha, float *y, int ld);
  407. void dscal2d( int nx, int ny, double alpha, double *y, int ld);
  408.  
  409. void sscal3d( int nx, int ny, int nz, float alpha, float *y, int ld1,int ld2);
  410. void dscal3d( int nx, int ny, int nz, double alpha, double *y, int ld1,int ld2);
  411.  
  412. /* ********************************************************
  413.     Fortran real <---> complex FFTs
  414. ******************************************************** */
  415. void sfft1di_( int *n, float *save);
  416. void sfft1dui_( int *n, float *save);
  417.  
  418. void sfft1d_( int *job, int *n, float *array, int *inc, float *save);
  419. void sfft1du_( int *job, int *n, float *array, int *inc, float *save);
  420.  
  421. void sfftm1di_( int *m, float *save);
  422. void sfftm1d_( int *job, int *m, int *n, float *array, int *incI, int *incJ, float *save);
  423. void sfftm1dui_( int *m, float *save);
  424. void sfftm1du_( int *job, int *m, int *n, float *array, int *incI, int *incJ, float *save);
  425.  
  426. void sfft2di_( int *n1, int *n2, void *save);
  427. void sfft2dui_( int *n1, int *n2, void *save);
  428. void sfft2d_( int *job, int *n1, int *n2, void *array, int *ld, void *save);
  429. void sfft2du_( int *job, int *n1, int *n2, void *array, int *ld, void *save);
  430.  
  431. void sfft3di_( int *n1, int *n2, int *n3, void *save);
  432. void sfft3dui_( int *n1, int *n2, int *n3, void *save);
  433. void sfft3d_( int *job, int *n1, int *n2, int *n3, void *array, int *ld1, int *ld2, void *save);
  434. void sfft3du_( int *job, int *n1, int *n2, int *n3, void *array, int *ld1, int *ld2, void *save);
  435.  
  436. /* ********************************************************
  437.     Fortran double <---> zomplex FFTs
  438. ******************************************************** */
  439. void dfft1di_( int *n, double *save);
  440. void dfft1dui_( int *n, double *save);
  441.  
  442. void dfft1d_( int *job, int *n, double *array, int *inc, double *save);
  443. void dfft1du_( int *job, int *n, double *array, int *inc, double *save);
  444.  
  445. void dfftm1di_( int *m, double *save);
  446. void dfftm1d_( int *job, int *m, int *n, double *array, int *incI, int *incJ, double *save);
  447. void dfftm1dui_( int *m, double *save);
  448. void dfftm1du_( int *job, int *m, int *n, double *array, int *incI, int *incJ, double *save);
  449.  
  450. void dfft2di_( int *n1, int *n2, void *save);
  451. void dfft2dui_( int *n1, int *n2, void *save);
  452. void dfft2d_( int *job, int *n1, int *n2, void *array, int *ld, void *save);
  453. void dfft2du_( int *job, int *n1, int *n2, void *array, int *ld, void *save);
  454.  
  455. void dfft3di_( int *n1, int *n2, int *n3, void *save);
  456. void dfft3dui_( int *n1, int *n2, int *n3, void *save);
  457. void dfft3d_( int *job, int *n1, int *n2, int *n3, void *array, int *ld1, int *ld2, void *save);
  458. void dfft3du_( int *job, int *n1, int *n2, int *n3, void *array, int *ld1, int *ld2, void *save);
  459.  
  460. /************************************************************************
  461.     C  Product modules ... 
  462.         Performs convolution in 1 Domain by Product in the other
  463. ********************************************************************** */
  464.  
  465. void sprod1du_( int *n, float *y, int *incy, float *filter, int *incx);
  466. void dprod1du_( int *n, double *y, int *incy, double *filter, int *incx);
  467.         
  468. void sprodm1du_( int *n1, int *n2, float *y, int *incy, int *ldy, float *filter, int *incx, int *ldx);
  469. void dprodm1du_( int *n1, int *n2, double *y, int *incy, int *ldy, double *filter, int *incx, int *ldx);
  470.  
  471. void sprod2du_( int *n1, int *n2, float *y, int *ldy, float *filter, int *ldx);
  472. void dprod2du_( int *n1, int *n2, double *y, int *ldy, double *filter, int *ldx);
  473.  
  474. void sprod3du_( int *n1, int *n2, int *n3, float *y, int *ldy1, int *ldy2, 
  475.         float *filter, int *ldx1, int *ldx2);
  476. void dprod3du_( int *n1, int *n2, int *n3, double *y, int *ldy1, int *ldy2, 
  477.         double *filter, int *ldx1, int *ldx2);
  478.  
  479. void sprod1d_( int *n, float *y, int *incy, float *filter, int *incx);
  480. void dprod1d_( int *n, double *y, int *incy, double *filter, int *incx);
  481.         
  482. void sprodm1d_( int *n1, int *n2, float *y, int *incy, int *ldy, float *filter, int *incx, int *ldx);
  483. void dprodm1d_( int *n1, int *n2, double *y, int *incy, int *ldy, double *filter, int *incx, int *ldx);
  484.  
  485. void sprod2d_( int *n1, int *n2, float *y, int *ldy, float *filter, int *ldx);
  486. void dprod2d_( int *n1, int *n2, double *y, int *ldy, double *filter, int *ldx);
  487.  
  488. void sprod3d_( int *n1, int *n2, int *n3, float *y, int *ldy1, int *ldy2, 
  489.         float *filter, int *ldx1, int *ldx2);
  490. void dprod3d_( int *n1, int *n2, int *n3, double *y, int *ldy1, int *ldy2, 
  491.         double *filter, int *ldx1, int *ldx2);
  492.  
  493. /************************************************************************
  494.     Fortran Scaling modules ... 
  495.         Scale the sequence by value APLHA ... 
  496.         to keep absolute values after Direct+Inverse transform.
  497. ********************************************************************** */ 
  498.  
  499. void sscal1d_( int *n, float *alpha, float *y, int *inc);
  500. void dscal1d_( int *n, double *alpha, double *y, int *inc);
  501.  
  502. void sscalm1d_( int *m, int *n, float *alpha, float *array, int *incI, int *incJ);
  503. void dscalm1d_( int *m, int *n, double *alpha, double *array, int *incI, int *incJ);
  504.  
  505. void sscal2d_( int *nx, int *ny, float *alpha, float *y, int *ld);
  506. void dscal2d_( int *nx, int *ny, double *alpha, double *y, int *ld);
  507.  
  508. void sscal3d_( int *nx, int *ny, int *nz, float *alpha, float *y, int *ld1,int *ld2);
  509. void dscal3d_( int *nx, int *ny, int *nz, double *alpha, double *y, int *ld1,int *ld2);
  510.  
  511. #ifdef __cplusplus
  512. }
  513. #endif
  514.  
  515. #endif
  516.